import '.env.js'

const baseUrl = process.uEnv.BASE_API

/**
 * 获取token
 */
const getToken = () => {
	return uni.getStorageSync('token')
}

/**
 * 设置请求头
 */
const getHeader = (method) => {
	return {
		'content-type': 'application/json',
		token: getToken()
	}
}

/**
 * 通用http请求
 * @param {url} 请求的地址
 * @param {data} 请求的参数
 * @param {method} 请求的方法      
 */
const http = (url, data, method) => {
	return new Promise((resove, reject) => {
		uni.showLoading();
		uni.request({
			url: baseUrl + url,
			timeout: 60000,
			method,
			data,
			...getHeader(),
			success: (res) => {
				// 只有在200的时候resove
				if (res.data.code === 200) {
					resolve(res.data)
				} else {
					reject(res.data)
				}
			},
			//失败调用reject
			fail:(err)=>{
				uni.hideLoading();
				uni.showToast({
					title: '请求失败',
					duration: 2000
				});
				reject(err)
			}
		})
	})
}

/**
 * get请求
 * @param {url} 请求的地址
 * @param {data} 请求的参数      
 */
export const get = (url, data) => {
	return new Promise((resolve, reject)=> {
		http(url, data, 'get').then(res => {
			resolve(res);
		}).catch(err => {
			reject(err);
		})
	})
}

/**
 * post请求
 * @param {url} 请求的地址
 * @param {data} 请求的参数      
 */
export const post = (url, data) => {
	return new Promise((resolve, reject)=> {
		http(url, data, 'post').then(res => {
			resolve(res);
		}).catch(err => {
			reject(err);
		})
	})
}



export default {
	install(Vue) {
		Vue.prototype.$http = http,
		Vue.prototype.$get = get,
		Vue.prototype.$post = post
	}
}